sizerequest: Make sure widget sizes stay positive
authorTimm Bäder <mail@baedert.org>
Mon, 15 May 2017 12:38:22 +0000 (14:38 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 20 Jul 2017 01:27:11 +0000 (21:27 -0400)
They can otherwise become negative, e.g. when large negative css
margins are applied.

gtk/gtksizerequest.c

index 5b54ea386110283f4b016a8b7cb6a45bc7df0016..2b1b097b4d72b764f815fc00639158e0f57f6439 100644 (file)
@@ -462,10 +462,10 @@ gtk_widget_measure (GtkWidget        *widget,
                                              minimum_baseline, natural_baseline);
 
       if (minimum)
-        *minimum = MAX (*minimum, css_min_size) + css_extra_size;
+        *minimum = MAX (0, MAX (*minimum, css_min_size) + css_extra_size);
 
       if (natural)
-        *natural = MAX (*natural, css_min_size) + css_extra_size;
+        *natural = MAX (0, MAX (*natural, css_min_size) + css_extra_size);
       /* TODO: Baselines! */
 
       return;
@@ -497,8 +497,8 @@ gtk_widget_measure (GtkWidget        *widget,
 
       gtk_widget_query_size_for_orientation (tmp_widget, orientation, for_size, &min_dimension, &nat_dimension, NULL, NULL);
 
-      min_result = MAX (min_result, MAX (min_dimension, css_min_size) + css_extra_size);
-      nat_result = MAX (nat_result, MAX (nat_dimension, css_min_size) + css_extra_size);
+      min_result = MAX (0, MAX (min_result, MAX (min_dimension, css_min_size) + css_extra_size));
+      nat_result = MAX (0, MAX (nat_result, MAX (nat_dimension, css_min_size) + css_extra_size));
     }
 
   g_hash_table_destroy (widgets);